#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>
#include <U8g2_for_Adafruit_GFX.h>
#include <img/temperature.h>

// 定义SPI引脚
#define TFT_CS     5
#define TFT_RST    4
#define TFT_DC     23
#define TFT_SCLK   18
#define TFT_MOSI   19

Adafruit_ST7735 tft(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
U8G2_FOR_ADAFRUIT_GFX u8g2;
// Chancery_L chancery;
// ZdyLwFont_20 zdyLwFont;
// Adafruit_ImageReader reader; // 不传入SD对象

void setup() {
  Serial.begin(115200);
  tft.initR(INITR_BLACKTAB);
  tft.setRotation(1);
  tft.fillScreen(ST7735_BLACK);

  // 初始化U8g2适配器
  u8g2.begin(tft);
  u8g2.setFontMode(1);       // 透明模式
  u8g2.setForegroundColor(ST7735_WHITE); // 文本颜色

  // 设置不同字体（需提前加载）
  u8g2.setFont(u8g2_font_wqy12_t_gb2312); // 小号中文
  u8g2.setCursor(10, 10);
  u8g2.print("深圳");

  u8g2.setCursor(90, 10);
  u8g2.print("优");

  // 温度信息（使用同一字体）
  u8g2.setCursor(10, 30);
  u8g2.print("最高温度21℃");

  // 时间信息（切换大字体）
  // u8g2.setFont(timeClockFont); // 假设已加载自定义数字字体
  u8g2.setCursor(10, 50);
  u8g2.print("13:32");

  // 恢复小字体
  u8g2.setFont(u8g2_font_wqy12_t_gb2312);
  u8g2.setCursor(90, 50);
  u8g2.print("56");

  // 日期和星期
  u8g2.setCursor(10, 90);
  u8g2.print("12月25日");
  u8g2.setCursor(90, 90);
  u8g2.print("周六");

  // 湿度信息
  u8g2.setCursor(10, 110);
  u8g2.print("20%");
  u8g2.setCursor(90, 110);
  u8g2.print("65%");
  tft.drawBitmap(110, 40, temperature, 48, 48, ST7735_BLUE);

  // 加载BMP图像
  // ImageReturnCode stat = reader.loadBMP(
  //   temperature,       // BMP数组指针
  //   sizeof(temperature),   // BMP数据长度
  //   tft,            // 显示对象
  //   110, 40         // 显示坐标
  // );

  // if (stat != IMAGE_SUCCESS) {
  //   Serial.println("显示失败");
  // }

  // 绘制图标（仍需用Adafruit_GFX绘图）
  tft.fillRect(110, 10, 20, 20, ST7735_YELLOW); // 太阳图标
}

void loop() {
  static int count = 0;
  u8g2.setFont(u8g2_font_wqy12_t_chinese3);
  u8g2.setCursor(10, 70);
  u8g2.setForegroundColor(ST7735_GREEN);
  u8g2.print("Count: ");
  u8g2.print(count++);
  delay(1000);
}